{"ast":null,"code":"import _slicedToArray from \"/Users/poppie/Desktop/development/messenger/app/frontend/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _defineProperty from \"/Users/poppie/Desktop/development/messenger/app/frontend/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport debounce from '../utils/debounce';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport tabsClasses, { getTabsUtilityClass } from './tabsClasses';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar nextItem = function nextItem(list, item) {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return list.firstChild;\n};\nvar previousItem = function previousItem(list, item) {\n  if (list === item) {\n    return list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return list.lastChild;\n};\nvar moveFocus = function moveFocus(list, currentFocus, traversalFunction) {\n  var wrappedOnce = false;\n  var nextFocus = traversalFunction(list, currentFocus);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    var nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus);\n    } else {\n      nextFocus.focus();\n      return;\n    }\n  }\n};\nvar useUtilityClasses = function useUtilityClasses(ownerState) {\n  var vertical = ownerState.vertical,\n    fixed = ownerState.fixed,\n    hideScrollbar = ownerState.hideScrollbar,\n    scrollableX = ownerState.scrollableX,\n    scrollableY = ownerState.scrollableY,\n    centered = ownerState.centered,\n    scrollButtonsHideMobile = ownerState.scrollButtonsHideMobile,\n    classes = ownerState.classes;\n  var slots = {\n    root: ['root', vertical && 'vertical'],\n    scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n    flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n    indicator: ['indicator'],\n    scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n    scrollableX: [scrollableX && 'scrollableX'],\n    hideScrollbar: [hideScrollbar && 'hideScrollbar']\n  };\n  return composeClasses(slots, getTabsUtilityClass, classes);\n};\nvar TabsRoot = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Root',\n  overridesResolver: function overridesResolver(props, styles) {\n    var ownerState = props.ownerState;\n    return [_defineProperty({}, \"& .\".concat(tabsClasses.scrollButtons), styles.scrollButtons), _defineProperty({}, \"& .\".concat(tabsClasses.scrollButtons), ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile), styles.root, ownerState.vertical && styles.vertical];\n  }\n})(function (_ref3) {\n  var ownerState = _ref3.ownerState,\n    theme = _ref3.theme;\n  return _extends({\n    overflow: 'hidden',\n    minHeight: 48,\n    // Add iOS momentum scrolling for iOS < 13.0\n    WebkitOverflowScrolling: 'touch',\n    display: 'flex'\n  }, ownerState.vertical && {\n    flexDirection: 'column'\n  }, ownerState.scrollButtonsHideMobile && _defineProperty({}, \"& .\".concat(tabsClasses.scrollButtons), _defineProperty({}, theme.breakpoints.down('sm'), {\n    display: 'none'\n  })));\n});\nvar TabsScroller = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Scroller',\n  overridesResolver: function overridesResolver(props, styles) {\n    var ownerState = props.ownerState;\n    return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n  }\n})(function (_ref5) {\n  var ownerState = _ref5.ownerState;\n  return _extends({\n    position: 'relative',\n    display: 'inline-block',\n    flex: '1 1 auto',\n    whiteSpace: 'nowrap'\n  }, ownerState.fixed && {\n    overflowX: 'hidden',\n    width: '100%'\n  }, ownerState.hideScrollbar && {\n    // Hide dimensionless scrollbar on macOS\n    scrollbarWidth: 'none',\n    // Firefox\n    '&::-webkit-scrollbar': {\n      display: 'none' // Safari + Chrome\n    }\n  }, ownerState.scrollableX && {\n    overflowX: 'auto',\n    overflowY: 'hidden'\n  }, ownerState.scrollableY && {\n    overflowY: 'auto',\n    overflowX: 'hidden'\n  });\n});\nvar FlexContainer = styled('div', {\n  name: 'MuiTabs',\n  slot: 'FlexContainer',\n  overridesResolver: function overridesResolver(props, styles) {\n    var ownerState = props.ownerState;\n    return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n  }\n})(function (_ref6) {\n  var ownerState = _ref6.ownerState;\n  return _extends({\n    display: 'flex'\n  }, ownerState.vertical && {\n    flexDirection: 'column'\n  }, ownerState.centered && {\n    justifyContent: 'center'\n  });\n});\nvar TabsIndicator = styled('span', {\n  name: 'MuiTabs',\n  slot: 'Indicator',\n  overridesResolver: function overridesResolver(props, styles) {\n    return styles.indicator;\n  }\n})(function (_ref7) {\n  var ownerState = _ref7.ownerState,\n    theme = _ref7.theme;\n  return _extends({\n    position: 'absolute',\n    height: 2,\n    bottom: 0,\n    width: '100%',\n    transition: theme.transitions.create()\n  }, ownerState.indicatorColor === 'primary' && {\n    backgroundColor: (theme.vars || theme).palette.primary.main\n  }, ownerState.indicatorColor === 'secondary' && {\n    backgroundColor: (theme.vars || theme).palette.secondary.main\n  }, ownerState.vertical && {\n    height: '100%',\n    width: 2,\n    right: 0\n  });\n});\nvar TabsScrollbarSize = styled(ScrollbarSize, {\n  name: 'MuiTabs',\n  slot: 'ScrollbarSize'\n})({\n  overflowX: 'auto',\n  overflowY: 'hidden',\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n});\n\nvar defaultIndicatorStyle = {};\nvar warnedOnceTabPresent = false;\nvar Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n  var props = useThemeProps({\n    props: inProps,\n    name: 'MuiTabs'\n  });\n  var theme = useTheme();\n  var isRtl = theme.direction === 'rtl';\n  var ariaLabel = props['aria-label'],\n    ariaLabelledBy = props['aria-labelledby'],\n    action = props.action,\n    _props$centered = props.centered,\n    centered = _props$centered === void 0 ? false : _props$centered,\n    childrenProp = props.children,\n    className = props.className,\n    _props$component = props.component,\n    component = _props$component === void 0 ? 'div' : _props$component,\n    _props$allowScrollBut = props.allowScrollButtonsMobile,\n    allowScrollButtonsMobile = _props$allowScrollBut === void 0 ? false : _props$allowScrollBut,\n    _props$indicatorColor = props.indicatorColor,\n    indicatorColor = _props$indicatorColor === void 0 ? 'primary' : _props$indicatorColor,\n    onChange = props.onChange,\n    _props$orientation = props.orientation,\n    orientation = _props$orientation === void 0 ? 'horizontal' : _props$orientation,\n    _props$ScrollButtonCo = props.ScrollButtonComponent,\n    ScrollButtonComponent = _props$ScrollButtonCo === void 0 ? TabScrollButton : _props$ScrollButtonCo,\n    _props$scrollButtons = props.scrollButtons,\n    scrollButtons = _props$scrollButtons === void 0 ? 'auto' : _props$scrollButtons,\n    selectionFollowsFocus = props.selectionFollowsFocus,\n    _props$TabIndicatorPr = props.TabIndicatorProps,\n    TabIndicatorProps = _props$TabIndicatorPr === void 0 ? {} : _props$TabIndicatorPr,\n    _props$TabScrollButto = props.TabScrollButtonProps,\n    TabScrollButtonProps = _props$TabScrollButto === void 0 ? {} : _props$TabScrollButto,\n    _props$textColor = props.textColor,\n    textColor = _props$textColor === void 0 ? 'primary' : _props$textColor,\n    value = props.value,\n    _props$variant = props.variant,\n    variant = _props$variant === void 0 ? 'standard' : _props$variant,\n    _props$visibleScrollb = props.visibleScrollbar,\n    visibleScrollbar = _props$visibleScrollb === void 0 ? false : _props$visibleScrollb,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  var scrollable = variant === 'scrollable';\n  var vertical = orientation === 'vertical';\n  var scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n  var start = vertical ? 'top' : 'left';\n  var end = vertical ? 'bottom' : 'right';\n  var clientSize = vertical ? 'clientHeight' : 'clientWidth';\n  var size = vertical ? 'height' : 'width';\n  var ownerState = _extends({}, props, {\n    component: component,\n    allowScrollButtonsMobile: allowScrollButtonsMobile,\n    indicatorColor: indicatorColor,\n    orientation: orientation,\n    vertical: vertical,\n    scrollButtons: scrollButtons,\n    textColor: textColor,\n    variant: variant,\n    visibleScrollbar: visibleScrollbar,\n    fixed: !scrollable,\n    hideScrollbar: scrollable && !visibleScrollbar,\n    scrollableX: scrollable && !vertical,\n    scrollableY: scrollable && vertical,\n    centered: centered && !scrollable,\n    scrollButtonsHideMobile: !allowScrollButtonsMobile\n  });\n  var classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    if (centered && scrollable) {\n      console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n    }\n  }\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    mounted = _React$useState2[0],\n    setMounted = _React$useState2[1];\n  var _React$useState3 = React.useState(defaultIndicatorStyle),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    indicatorStyle = _React$useState4[0],\n    setIndicatorStyle = _React$useState4[1];\n  var _React$useState5 = React.useState({\n      start: false,\n      end: false\n    }),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    displayScroll = _React$useState6[0],\n    setDisplayScroll = _React$useState6[1];\n  var _React$useState7 = React.useState({\n      overflow: 'hidden',\n      scrollbarWidth: 0\n    }),\n    _React$useState8 = _slicedToArray(_React$useState7, 2),\n    scrollerStyle = _React$useState8[0],\n    setScrollerStyle = _React$useState8[1];\n  var valueToIndex = new Map();\n  var tabsRef = React.useRef(null);\n  var tabListRef = React.useRef(null);\n  var getTabsMeta = function getTabsMeta() {\n    var tabsNode = tabsRef.current;\n    var tabsMeta;\n    if (tabsNode) {\n      var rect = tabsNode.getBoundingClientRect();\n      // create a new object with ClientRect class props + scrollLeft\n      tabsMeta = {\n        clientWidth: tabsNode.clientWidth,\n        scrollLeft: tabsNode.scrollLeft,\n        scrollTop: tabsNode.scrollTop,\n        scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n        scrollWidth: tabsNode.scrollWidth,\n        top: rect.top,\n        bottom: rect.bottom,\n        left: rect.left,\n        right: rect.right\n      };\n    }\n    var tabMeta;\n    if (tabsNode && value !== false) {\n      var _children = tabListRef.current.children;\n      if (_children.length > 0) {\n        var tab = _children[valueToIndex.get(value)];\n        if (process.env.NODE_ENV !== 'production') {\n          if (!tab) {\n            console.error([\"MUI: The `value` provided to the Tabs component is invalid.\", \"None of the Tabs' children match with \\\"\".concat(value, \"\\\".\"), valueToIndex.keys ? \"You can provide one of the following values: \".concat(Array.from(valueToIndex.keys()).join(', '), \".\") : null].join('\\n'));\n          }\n        }\n        tabMeta = tab ? tab.getBoundingClientRect() : null;\n        if (process.env.NODE_ENV !== 'production') {\n          if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0) {\n            tabsMeta = null;\n            console.error(['MUI: The `value` provided to the Tabs component is invalid.', \"The Tab with this `value` (\\\"\".concat(value, \"\\\") is not part of the document layout.\"), \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n            warnedOnceTabPresent = true;\n          }\n        }\n      }\n    }\n    return {\n      tabsMeta: tabsMeta,\n      tabMeta: tabMeta\n    };\n  };\n  var updateIndicatorState = useEventCallback(function () {\n    var _newIndicatorStyle;\n    var _getTabsMeta = getTabsMeta(),\n      tabsMeta = _getTabsMeta.tabsMeta,\n      tabMeta = _getTabsMeta.tabMeta;\n    var startValue = 0;\n    var startIndicator;\n    if (vertical) {\n      startIndicator = 'top';\n      if (tabMeta && tabsMeta) {\n        startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n      }\n    } else {\n      startIndicator = isRtl ? 'right' : 'left';\n      if (tabMeta && tabsMeta) {\n        var correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n        startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n      }\n    }\n    var newIndicatorStyle = (_newIndicatorStyle = {}, _defineProperty(_newIndicatorStyle, startIndicator, startValue), _defineProperty(_newIndicatorStyle, size, tabMeta ? tabMeta[size] : 0), _newIndicatorStyle);\n\n    // IE11 support, replace with Number.isNaN\n    // eslint-disable-next-line no-restricted-globals\n    if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n      setIndicatorStyle(newIndicatorStyle);\n    } else {\n      var dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n      var dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n      if (dStart >= 1 || dSize >= 1) {\n        setIndicatorStyle(newIndicatorStyle);\n      }\n    }\n  });\n  var scroll = function scroll(scrollValue) {\n    var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref8$animation = _ref8.animation,\n      animation = _ref8$animation === void 0 ? true : _ref8$animation;\n    if (animation) {\n      animate(scrollStart, tabsRef.current, scrollValue, {\n        duration: theme.transitions.duration.standard\n      });\n    } else {\n      tabsRef.current[scrollStart] = scrollValue;\n    }\n  };\n  var moveTabsScroll = function moveTabsScroll(delta) {\n    var scrollValue = tabsRef.current[scrollStart];\n    if (vertical) {\n      scrollValue += delta;\n    } else {\n      scrollValue += delta * (isRtl ? -1 : 1);\n      // Fix for Edge\n      scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n    }\n    scroll(scrollValue);\n  };\n  var getScrollSize = function getScrollSize() {\n    var containerSize = tabsRef.current[clientSize];\n    var totalSize = 0;\n    var children = Array.from(tabListRef.current.children);\n    for (var i = 0; i < children.length; i += 1) {\n      var tab = children[i];\n      if (totalSize + tab[clientSize] > containerSize) {\n        // If the first item is longer than the container size, then only scroll\n        // by the container size.\n        if (i === 0) {\n          totalSize = containerSize;\n        }\n        break;\n      }\n      totalSize += tab[clientSize];\n    }\n    return totalSize;\n  };\n  var handleStartScrollClick = function handleStartScrollClick() {\n    moveTabsScroll(-1 * getScrollSize());\n  };\n  var handleEndScrollClick = function handleEndScrollClick() {\n    moveTabsScroll(getScrollSize());\n  };\n\n  // TODO Remove <ScrollbarSize /> as browser support for hidding the scrollbar\n  // with CSS improves.\n  var handleScrollbarSizeChange = React.useCallback(function (scrollbarWidth) {\n    setScrollerStyle({\n      overflow: null,\n      scrollbarWidth: scrollbarWidth\n    });\n  }, []);\n  var getConditionalElements = function getConditionalElements() {\n    var conditionalElements = {};\n    conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n      onChange: handleScrollbarSizeChange,\n      className: clsx(classes.scrollableX, classes.hideScrollbar)\n    }) : null;\n    var scrollButtonsActive = displayScroll.start || displayScroll.end;\n    var showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n    conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'right' : 'left',\n      onClick: handleStartScrollClick,\n      disabled: !displayScroll.start\n    }, TabScrollButtonProps, {\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'left' : 'right',\n      onClick: handleEndScrollClick,\n      disabled: !displayScroll.end\n    }, TabScrollButtonProps, {\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    return conditionalElements;\n  };\n  var scrollSelectedIntoView = useEventCallback(function (animation) {\n    var _getTabsMeta2 = getTabsMeta(),\n      tabsMeta = _getTabsMeta2.tabsMeta,\n      tabMeta = _getTabsMeta2.tabMeta;\n    if (!tabMeta || !tabsMeta) {\n      return;\n    }\n    if (tabMeta[start] < tabsMeta[start]) {\n      // left side of button is out of view\n      var nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n      scroll(nextScrollStart, {\n        animation: animation\n      });\n    } else if (tabMeta[end] > tabsMeta[end]) {\n      // right side of button is out of view\n      var _nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n      scroll(_nextScrollStart, {\n        animation: animation\n      });\n    }\n  });\n  var updateScrollButtonState = useEventCallback(function () {\n    if (scrollable && scrollButtons !== false) {\n      var _tabsRef$current = tabsRef.current,\n        scrollTop = _tabsRef$current.scrollTop,\n        scrollHeight = _tabsRef$current.scrollHeight,\n        clientHeight = _tabsRef$current.clientHeight,\n        scrollWidth = _tabsRef$current.scrollWidth,\n        clientWidth = _tabsRef$current.clientWidth;\n      var showStartScroll;\n      var showEndScroll;\n      if (vertical) {\n        showStartScroll = scrollTop > 1;\n        showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n      } else {\n        var scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction);\n        // use 1 for the potential rounding error with browser zooms.\n        showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n        showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n      }\n      if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n        setDisplayScroll({\n          start: showStartScroll,\n          end: showEndScroll\n        });\n      }\n    }\n  });\n  React.useEffect(function () {\n    var handleResize = debounce(function () {\n      // If the Tabs component is replaced by Suspense with a fallback, the last\n      // ResizeObserver's handler that runs because of the change in the layout is trying to\n      // access a dom node that is no longer there (as the fallback component is being shown instead).\n      // See https://github.com/mui/material-ui/issues/33276\n      // TODO: Add tests that will ensure the component is not failing when\n      // replaced by Suspense with a fallback, once React is updated to version 18\n      if (tabsRef.current) {\n        updateIndicatorState();\n        updateScrollButtonState();\n      }\n    });\n    var win = ownerWindow(tabsRef.current);\n    win.addEventListener('resize', handleResize);\n    var resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(handleResize);\n      Array.from(tabListRef.current.children).forEach(function (child) {\n        resizeObserver.observe(child);\n      });\n    }\n    return function () {\n      handleResize.clear();\n      win.removeEventListener('resize', handleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  var handleTabsScroll = React.useMemo(function () {\n    return debounce(function () {\n      updateScrollButtonState();\n    });\n  }, [updateScrollButtonState]);\n  React.useEffect(function () {\n    return function () {\n      handleTabsScroll.clear();\n    };\n  }, [handleTabsScroll]);\n  React.useEffect(function () {\n    setMounted(true);\n  }, []);\n  React.useEffect(function () {\n    updateIndicatorState();\n    updateScrollButtonState();\n  });\n  React.useEffect(function () {\n    // Don't animate on the first render.\n    scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n  }, [scrollSelectedIntoView, indicatorStyle]);\n  React.useImperativeHandle(action, function () {\n    return {\n      updateIndicator: updateIndicatorState,\n      updateScrollButtons: updateScrollButtonState\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  var indicator = /*#__PURE__*/_jsx(TabsIndicator, _extends({}, TabIndicatorProps, {\n    className: clsx(classes.indicator, TabIndicatorProps.className),\n    ownerState: ownerState,\n    style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n  }));\n  var childIndex = 0;\n  var children = React.Children.map(childrenProp, function (child) {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    var childValue = child.props.value === undefined ? childIndex : child.props.value;\n    valueToIndex.set(childValue, childIndex);\n    var selected = childValue === value;\n    childIndex += 1;\n    return /*#__PURE__*/React.cloneElement(child, _extends({\n      fullWidth: variant === 'fullWidth',\n      indicator: selected && !mounted && indicator,\n      selected: selected,\n      selectionFollowsFocus: selectionFollowsFocus,\n      onChange: onChange,\n      textColor: textColor,\n      value: childValue\n    }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n      tabIndex: 0\n    } : {}));\n  });\n  var handleKeyDown = function handleKeyDown(event) {\n    var list = tabListRef.current;\n    var currentFocus = ownerDocument(list).activeElement;\n    // Keyboard navigation assumes that [role=\"tab\"] are siblings\n    // though we might warn in the future about nested, interactive elements\n    // as a a11y violation\n    var role = currentFocus.getAttribute('role');\n    if (role !== 'tab') {\n      return;\n    }\n    var previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n    var nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n    if (orientation === 'horizontal' && isRtl) {\n      // swap previousItemKey with nextItemKey\n      previousItemKey = 'ArrowRight';\n      nextItemKey = 'ArrowLeft';\n    }\n    switch (event.key) {\n      case previousItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, previousItem);\n        break;\n      case nextItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, nextItem);\n        break;\n      case 'Home':\n        event.preventDefault();\n        moveFocus(list, null, nextItem);\n        break;\n      case 'End':\n        event.preventDefault();\n        moveFocus(list, null, previousItem);\n        break;\n      default:\n        break;\n    }\n  };\n  var conditionalElements = getConditionalElements();\n  return /*#__PURE__*/_jsxs(TabsRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    as: component\n  }, other, {\n    children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n      className: classes.scroller,\n      ownerState: ownerState,\n      style: _defineProperty({\n        overflow: scrollerStyle.overflow\n      }, vertical ? \"margin\".concat(isRtl ? 'Left' : 'Right') : 'marginBottom', visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth),\n      ref: tabsRef,\n      onScroll: handleTabsScroll,\n      children: [/*#__PURE__*/_jsx(FlexContainer, {\n        \"aria-label\": ariaLabel,\n        \"aria-labelledby\": ariaLabelledBy,\n        \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n        className: classes.flexContainer,\n        ownerState: ownerState,\n        onKeyDown: handleKeyDown,\n        ref: tabListRef,\n        role: \"tablist\",\n        children: children\n      }), mounted && indicator]\n    }), conditionalElements.scrollButtonEnd]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Callback fired when the component mounts.\n   * This is useful when you want to trigger an action programmatically.\n   * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n   *\n   * @param {object} actions This object contains all possible actions\n   * that can be triggered programmatically.\n   */\n  action: refType,\n  /**\n   * If `true`, the scroll buttons aren't forced hidden on mobile.\n   * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n   * @default false\n   */\n  allowScrollButtonsMobile: PropTypes.bool,\n  /**\n   * The label for the Tabs as a string.\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * An id or list of ids separated by a space that label the Tabs.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * If `true`, the tabs are centered.\n   * This prop is intended for large views.\n   * @default false\n   */\n  centered: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Determines the color of the indicator.\n   * @default 'primary'\n   */\n  indicatorColor: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {any} value We default to the index of the child (number)\n   */\n  onChange: PropTypes.func,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The component used to render the scroll buttons.\n   * @default TabScrollButton\n   */\n  ScrollButtonComponent: PropTypes.elementType,\n  /**\n   * Determine behavior of scroll buttons when tabs are set to scroll:\n   *\n   * - `auto` will only present them when not all the items are visible.\n   * - `true` will always present them.\n   * - `false` will never present them.\n   *\n   * By default the scroll buttons are hidden on mobile.\n   * This behavior can be disabled with `allowScrollButtonsMobile`.\n   * @default 'auto'\n   */\n  scrollButtons: PropTypes /* @typescript-to-proptypes-ignore */.oneOf(['auto', false, true]),\n  /**\n   * If `true` the selected tab changes on focus. Otherwise it only\n   * changes on activation.\n   */\n  selectionFollowsFocus: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Props applied to the tab indicator element.\n   * @default  {}\n   */\n  TabIndicatorProps: PropTypes.object,\n  /**\n   * Props applied to the [`TabScrollButton`](/material-ui/api/tab-scroll-button/) element.\n   * @default {}\n   */\n  TabScrollButtonProps: PropTypes.object,\n  /**\n   * Determines the color of the `Tab`.\n   * @default 'primary'\n   */\n  textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n  /**\n   * The value of the currently selected `Tab`.\n   * If you don't want any selected `Tab`, you can set this prop to `false`.\n   */\n  value: PropTypes.any,\n  /**\n   * Determines additional display behavior of the tabs:\n   *\n   *  - `scrollable` will invoke scrolling properties and allow for horizontally\n   *  scrolling (or swiping) of the tab bar.\n   *  -`fullWidth` will make the tabs grow to use all the available space,\n   *  which should be used for small views, like on mobile.\n   *  - `standard` will render the default state.\n   * @default 'standard'\n   */\n  variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n  /**\n   * If `true`, the scrollbar is visible. It can be useful when displaying\n   * a long vertical list of tabs.\n   * @default false\n   */\n  visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;","map":{"version":3,"names":["_objectWithoutPropertiesLoose","_extends","_excluded","React","isFragment","PropTypes","clsx","refType","unstable_composeClasses","composeClasses","styled","useThemeProps","useTheme","debounce","getNormalizedScrollLeft","detectScrollType","animate","ScrollbarSize","TabScrollButton","useEventCallback","tabsClasses","getTabsUtilityClass","ownerDocument","ownerWindow","jsx","_jsx","jsxs","_jsxs","nextItem","list","item","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","moveFocus","currentFocus","traversalFunction","wrappedOnce","nextFocus","nextFocusDisabled","disabled","getAttribute","hasAttribute","focus","useUtilityClasses","ownerState","vertical","fixed","hideScrollbar","scrollableX","scrollableY","centered","scrollButtonsHideMobile","classes","slots","root","scroller","flexContainer","indicator","scrollButtons","TabsRoot","name","slot","overridesResolver","props","styles","theme","overflow","minHeight","WebkitOverflowScrolling","display","flexDirection","breakpoints","down","TabsScroller","position","flex","whiteSpace","overflowX","width","scrollbarWidth","overflowY","FlexContainer","flexContainerVertical","justifyContent","TabsIndicator","height","bottom","transition","transitions","create","indicatorColor","backgroundColor","vars","palette","primary","main","secondary","right","TabsScrollbarSize","defaultIndicatorStyle","warnedOnceTabPresent","Tabs","forwardRef","inProps","ref","isRtl","direction","ariaLabel","ariaLabelledBy","action","childrenProp","children","className","component","allowScrollButtonsMobile","onChange","orientation","ScrollButtonComponent","selectionFollowsFocus","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar","other","scrollable","scrollStart","start","end","clientSize","size","process","env","NODE_ENV","console","error","useState","mounted","setMounted","indicatorStyle","setIndicatorStyle","displayScroll","setDisplayScroll","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","useRef","tabListRef","getTabsMeta","tabsNode","current","tabsMeta","rect","getBoundingClientRect","clientWidth","scrollLeft","scrollTop","scrollLeftNormalized","scrollWidth","top","left","tabMeta","length","tab","get","keys","Array","from","join","updateIndicatorState","startValue","startIndicator","correction","newIndicatorStyle","isNaN","dStart","Math","abs","dSize","scroll","scrollValue","animation","duration","standard","moveTabsScroll","delta","getScrollSize","containerSize","totalSize","i","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","useCallback","getConditionalElements","conditionalElements","scrollbarSizeListener","scrollButtonsActive","showScrollButtons","scrollButtonStart","onClick","scrollButtonEnd","scrollSelectedIntoView","nextScrollStart","updateScrollButtonState","scrollHeight","clientHeight","showStartScroll","showEndScroll","useEffect","handleResize","win","addEventListener","resizeObserver","ResizeObserver","forEach","child","observe","clear","removeEventListener","disconnect","handleTabsScroll","useMemo","useImperativeHandle","updateIndicator","updateScrollButtons","style","childIndex","Children","map","isValidElement","childValue","undefined","set","selected","cloneElement","fullWidth","tabIndex","handleKeyDown","event","activeElement","role","previousItemKey","nextItemKey","key","preventDefault","as","onScroll","onKeyDown","propTypes","bool","string","node","object","elementType","oneOfType","oneOf","func","sx","arrayOf","any"],"sources":["/Users/poppie/Desktop/development/messenger/app/frontend/node_modules/@mui/material/esm/Tabs/Tabs.js"],"sourcesContent":["import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport debounce from '../utils/debounce';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport tabsClasses, { getTabsUtilityClass } from './tabsClasses';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst nextItem = (list, item) => {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return list.firstChild;\n};\nconst previousItem = (list, item) => {\n  if (list === item) {\n    return list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return list.lastChild;\n};\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus);\n    } else {\n      nextFocus.focus();\n      return;\n    }\n  }\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    vertical,\n    fixed,\n    hideScrollbar,\n    scrollableX,\n    scrollableY,\n    centered,\n    scrollButtonsHideMobile,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', vertical && 'vertical'],\n    scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n    flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n    indicator: ['indicator'],\n    scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n    scrollableX: [scrollableX && 'scrollableX'],\n    hideScrollbar: [hideScrollbar && 'hideScrollbar']\n  };\n  return composeClasses(slots, getTabsUtilityClass, classes);\n};\nconst TabsRoot = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${tabsClasses.scrollButtons}`]: styles.scrollButtons\n    }, {\n      [`& .${tabsClasses.scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n    }, styles.root, ownerState.vertical && styles.vertical];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  overflow: 'hidden',\n  minHeight: 48,\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  display: 'flex'\n}, ownerState.vertical && {\n  flexDirection: 'column'\n}, ownerState.scrollButtonsHideMobile && {\n  [`& .${tabsClasses.scrollButtons}`]: {\n    [theme.breakpoints.down('sm')]: {\n      display: 'none'\n    }\n  }\n}));\nconst TabsScroller = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Scroller',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n  }\n})(({\n  ownerState\n}) => _extends({\n  position: 'relative',\n  display: 'inline-block',\n  flex: '1 1 auto',\n  whiteSpace: 'nowrap'\n}, ownerState.fixed && {\n  overflowX: 'hidden',\n  width: '100%'\n}, ownerState.hideScrollbar && {\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n}, ownerState.scrollableX && {\n  overflowX: 'auto',\n  overflowY: 'hidden'\n}, ownerState.scrollableY && {\n  overflowY: 'auto',\n  overflowX: 'hidden'\n}));\nconst FlexContainer = styled('div', {\n  name: 'MuiTabs',\n  slot: 'FlexContainer',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'flex'\n}, ownerState.vertical && {\n  flexDirection: 'column'\n}, ownerState.centered && {\n  justifyContent: 'center'\n}));\nconst TabsIndicator = styled('span', {\n  name: 'MuiTabs',\n  slot: 'Indicator',\n  overridesResolver: (props, styles) => styles.indicator\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  position: 'absolute',\n  height: 2,\n  bottom: 0,\n  width: '100%',\n  transition: theme.transitions.create()\n}, ownerState.indicatorColor === 'primary' && {\n  backgroundColor: (theme.vars || theme).palette.primary.main\n}, ownerState.indicatorColor === 'secondary' && {\n  backgroundColor: (theme.vars || theme).palette.secondary.main\n}, ownerState.vertical && {\n  height: '100%',\n  width: 2,\n  right: 0\n}));\nconst TabsScrollbarSize = styled(ScrollbarSize, {\n  name: 'MuiTabs',\n  slot: 'ScrollbarSize'\n})({\n  overflowX: 'auto',\n  overflowY: 'hidden',\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n});\n\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTabs'\n  });\n  const theme = useTheme();\n  const isRtl = theme.direction === 'rtl';\n  const {\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      action,\n      centered = false,\n      children: childrenProp,\n      className,\n      component = 'div',\n      allowScrollButtonsMobile = false,\n      indicatorColor = 'primary',\n      onChange,\n      orientation = 'horizontal',\n      ScrollButtonComponent = TabScrollButton,\n      scrollButtons = 'auto',\n      selectionFollowsFocus,\n      TabIndicatorProps = {},\n      TabScrollButtonProps = {},\n      textColor = 'primary',\n      value,\n      variant = 'standard',\n      visibleScrollbar = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const scrollable = variant === 'scrollable';\n  const vertical = orientation === 'vertical';\n  const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n  const start = vertical ? 'top' : 'left';\n  const end = vertical ? 'bottom' : 'right';\n  const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n  const size = vertical ? 'height' : 'width';\n  const ownerState = _extends({}, props, {\n    component,\n    allowScrollButtonsMobile,\n    indicatorColor,\n    orientation,\n    vertical,\n    scrollButtons,\n    textColor,\n    variant,\n    visibleScrollbar,\n    fixed: !scrollable,\n    hideScrollbar: scrollable && !visibleScrollbar,\n    scrollableX: scrollable && !vertical,\n    scrollableY: scrollable && vertical,\n    centered: centered && !scrollable,\n    scrollButtonsHideMobile: !allowScrollButtonsMobile\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    if (centered && scrollable) {\n      console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n    }\n  }\n  const [mounted, setMounted] = React.useState(false);\n  const [indicatorStyle, setIndicatorStyle] = React.useState(defaultIndicatorStyle);\n  const [displayScroll, setDisplayScroll] = React.useState({\n    start: false,\n    end: false\n  });\n  const [scrollerStyle, setScrollerStyle] = React.useState({\n    overflow: 'hidden',\n    scrollbarWidth: 0\n  });\n  const valueToIndex = new Map();\n  const tabsRef = React.useRef(null);\n  const tabListRef = React.useRef(null);\n  const getTabsMeta = () => {\n    const tabsNode = tabsRef.current;\n    let tabsMeta;\n    if (tabsNode) {\n      const rect = tabsNode.getBoundingClientRect();\n      // create a new object with ClientRect class props + scrollLeft\n      tabsMeta = {\n        clientWidth: tabsNode.clientWidth,\n        scrollLeft: tabsNode.scrollLeft,\n        scrollTop: tabsNode.scrollTop,\n        scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n        scrollWidth: tabsNode.scrollWidth,\n        top: rect.top,\n        bottom: rect.bottom,\n        left: rect.left,\n        right: rect.right\n      };\n    }\n    let tabMeta;\n    if (tabsNode && value !== false) {\n      const children = tabListRef.current.children;\n      if (children.length > 0) {\n        const tab = children[valueToIndex.get(value)];\n        if (process.env.NODE_ENV !== 'production') {\n          if (!tab) {\n            console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n          }\n        }\n        tabMeta = tab ? tab.getBoundingClientRect() : null;\n        if (process.env.NODE_ENV !== 'production') {\n          if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0) {\n            tabsMeta = null;\n            console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n            warnedOnceTabPresent = true;\n          }\n        }\n      }\n    }\n    return {\n      tabsMeta,\n      tabMeta\n    };\n  };\n  const updateIndicatorState = useEventCallback(() => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    let startValue = 0;\n    let startIndicator;\n    if (vertical) {\n      startIndicator = 'top';\n      if (tabMeta && tabsMeta) {\n        startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n      }\n    } else {\n      startIndicator = isRtl ? 'right' : 'left';\n      if (tabMeta && tabsMeta) {\n        const correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n        startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n      }\n    }\n    const newIndicatorStyle = {\n      [startIndicator]: startValue,\n      // May be wrong until the font is loaded.\n      [size]: tabMeta ? tabMeta[size] : 0\n    };\n\n    // IE11 support, replace with Number.isNaN\n    // eslint-disable-next-line no-restricted-globals\n    if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n      setIndicatorStyle(newIndicatorStyle);\n    } else {\n      const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n      const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n      if (dStart >= 1 || dSize >= 1) {\n        setIndicatorStyle(newIndicatorStyle);\n      }\n    }\n  });\n  const scroll = (scrollValue, {\n    animation = true\n  } = {}) => {\n    if (animation) {\n      animate(scrollStart, tabsRef.current, scrollValue, {\n        duration: theme.transitions.duration.standard\n      });\n    } else {\n      tabsRef.current[scrollStart] = scrollValue;\n    }\n  };\n  const moveTabsScroll = delta => {\n    let scrollValue = tabsRef.current[scrollStart];\n    if (vertical) {\n      scrollValue += delta;\n    } else {\n      scrollValue += delta * (isRtl ? -1 : 1);\n      // Fix for Edge\n      scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n    }\n    scroll(scrollValue);\n  };\n  const getScrollSize = () => {\n    const containerSize = tabsRef.current[clientSize];\n    let totalSize = 0;\n    const children = Array.from(tabListRef.current.children);\n    for (let i = 0; i < children.length; i += 1) {\n      const tab = children[i];\n      if (totalSize + tab[clientSize] > containerSize) {\n        // If the first item is longer than the container size, then only scroll\n        // by the container size.\n        if (i === 0) {\n          totalSize = containerSize;\n        }\n        break;\n      }\n      totalSize += tab[clientSize];\n    }\n    return totalSize;\n  };\n  const handleStartScrollClick = () => {\n    moveTabsScroll(-1 * getScrollSize());\n  };\n  const handleEndScrollClick = () => {\n    moveTabsScroll(getScrollSize());\n  };\n\n  // TODO Remove <ScrollbarSize /> as browser support for hidding the scrollbar\n  // with CSS improves.\n  const handleScrollbarSizeChange = React.useCallback(scrollbarWidth => {\n    setScrollerStyle({\n      overflow: null,\n      scrollbarWidth\n    });\n  }, []);\n  const getConditionalElements = () => {\n    const conditionalElements = {};\n    conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n      onChange: handleScrollbarSizeChange,\n      className: clsx(classes.scrollableX, classes.hideScrollbar)\n    }) : null;\n    const scrollButtonsActive = displayScroll.start || displayScroll.end;\n    const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n    conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'right' : 'left',\n      onClick: handleStartScrollClick,\n      disabled: !displayScroll.start\n    }, TabScrollButtonProps, {\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'left' : 'right',\n      onClick: handleEndScrollClick,\n      disabled: !displayScroll.end\n    }, TabScrollButtonProps, {\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    return conditionalElements;\n  };\n  const scrollSelectedIntoView = useEventCallback(animation => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    if (!tabMeta || !tabsMeta) {\n      return;\n    }\n    if (tabMeta[start] < tabsMeta[start]) {\n      // left side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    } else if (tabMeta[end] > tabsMeta[end]) {\n      // right side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    }\n  });\n  const updateScrollButtonState = useEventCallback(() => {\n    if (scrollable && scrollButtons !== false) {\n      const {\n        scrollTop,\n        scrollHeight,\n        clientHeight,\n        scrollWidth,\n        clientWidth\n      } = tabsRef.current;\n      let showStartScroll;\n      let showEndScroll;\n      if (vertical) {\n        showStartScroll = scrollTop > 1;\n        showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n      } else {\n        const scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction);\n        // use 1 for the potential rounding error with browser zooms.\n        showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n        showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n      }\n      if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n        setDisplayScroll({\n          start: showStartScroll,\n          end: showEndScroll\n        });\n      }\n    }\n  });\n  React.useEffect(() => {\n    const handleResize = debounce(() => {\n      // If the Tabs component is replaced by Suspense with a fallback, the last\n      // ResizeObserver's handler that runs because of the change in the layout is trying to\n      // access a dom node that is no longer there (as the fallback component is being shown instead).\n      // See https://github.com/mui/material-ui/issues/33276\n      // TODO: Add tests that will ensure the component is not failing when\n      // replaced by Suspense with a fallback, once React is updated to version 18\n      if (tabsRef.current) {\n        updateIndicatorState();\n        updateScrollButtonState();\n      }\n    });\n    const win = ownerWindow(tabsRef.current);\n    win.addEventListener('resize', handleResize);\n    let resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(handleResize);\n      Array.from(tabListRef.current.children).forEach(child => {\n        resizeObserver.observe(child);\n      });\n    }\n    return () => {\n      handleResize.clear();\n      win.removeEventListener('resize', handleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  const handleTabsScroll = React.useMemo(() => debounce(() => {\n    updateScrollButtonState();\n  }), [updateScrollButtonState]);\n  React.useEffect(() => {\n    return () => {\n      handleTabsScroll.clear();\n    };\n  }, [handleTabsScroll]);\n  React.useEffect(() => {\n    setMounted(true);\n  }, []);\n  React.useEffect(() => {\n    updateIndicatorState();\n    updateScrollButtonState();\n  });\n  React.useEffect(() => {\n    // Don't animate on the first render.\n    scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n  }, [scrollSelectedIntoView, indicatorStyle]);\n  React.useImperativeHandle(action, () => ({\n    updateIndicator: updateIndicatorState,\n    updateScrollButtons: updateScrollButtonState\n  }), [updateIndicatorState, updateScrollButtonState]);\n  const indicator = /*#__PURE__*/_jsx(TabsIndicator, _extends({}, TabIndicatorProps, {\n    className: clsx(classes.indicator, TabIndicatorProps.className),\n    ownerState: ownerState,\n    style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n  }));\n  let childIndex = 0;\n  const children = React.Children.map(childrenProp, child => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    const childValue = child.props.value === undefined ? childIndex : child.props.value;\n    valueToIndex.set(childValue, childIndex);\n    const selected = childValue === value;\n    childIndex += 1;\n    return /*#__PURE__*/React.cloneElement(child, _extends({\n      fullWidth: variant === 'fullWidth',\n      indicator: selected && !mounted && indicator,\n      selected,\n      selectionFollowsFocus,\n      onChange,\n      textColor,\n      value: childValue\n    }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n      tabIndex: 0\n    } : {}));\n  });\n  const handleKeyDown = event => {\n    const list = tabListRef.current;\n    const currentFocus = ownerDocument(list).activeElement;\n    // Keyboard navigation assumes that [role=\"tab\"] are siblings\n    // though we might warn in the future about nested, interactive elements\n    // as a a11y violation\n    const role = currentFocus.getAttribute('role');\n    if (role !== 'tab') {\n      return;\n    }\n    let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n    let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n    if (orientation === 'horizontal' && isRtl) {\n      // swap previousItemKey with nextItemKey\n      previousItemKey = 'ArrowRight';\n      nextItemKey = 'ArrowLeft';\n    }\n    switch (event.key) {\n      case previousItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, previousItem);\n        break;\n      case nextItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, nextItem);\n        break;\n      case 'Home':\n        event.preventDefault();\n        moveFocus(list, null, nextItem);\n        break;\n      case 'End':\n        event.preventDefault();\n        moveFocus(list, null, previousItem);\n        break;\n      default:\n        break;\n    }\n  };\n  const conditionalElements = getConditionalElements();\n  return /*#__PURE__*/_jsxs(TabsRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    as: component\n  }, other, {\n    children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n      className: classes.scroller,\n      ownerState: ownerState,\n      style: {\n        overflow: scrollerStyle.overflow,\n        [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n      },\n      ref: tabsRef,\n      onScroll: handleTabsScroll,\n      children: [/*#__PURE__*/_jsx(FlexContainer, {\n        \"aria-label\": ariaLabel,\n        \"aria-labelledby\": ariaLabelledBy,\n        \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n        className: classes.flexContainer,\n        ownerState: ownerState,\n        onKeyDown: handleKeyDown,\n        ref: tabListRef,\n        role: \"tablist\",\n        children: children\n      }), mounted && indicator]\n    }), conditionalElements.scrollButtonEnd]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes /* remove-proptypes */ = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n  /**\n   * Callback fired when the component mounts.\n   * This is useful when you want to trigger an action programmatically.\n   * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n   *\n   * @param {object} actions This object contains all possible actions\n   * that can be triggered programmatically.\n   */\n  action: refType,\n  /**\n   * If `true`, the scroll buttons aren't forced hidden on mobile.\n   * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n   * @default false\n   */\n  allowScrollButtonsMobile: PropTypes.bool,\n  /**\n   * The label for the Tabs as a string.\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * An id or list of ids separated by a space that label the Tabs.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * If `true`, the tabs are centered.\n   * This prop is intended for large views.\n   * @default false\n   */\n  centered: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Determines the color of the indicator.\n   * @default 'primary'\n   */\n  indicatorColor: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {any} value We default to the index of the child (number)\n   */\n  onChange: PropTypes.func,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The component used to render the scroll buttons.\n   * @default TabScrollButton\n   */\n  ScrollButtonComponent: PropTypes.elementType,\n  /**\n   * Determine behavior of scroll buttons when tabs are set to scroll:\n   *\n   * - `auto` will only present them when not all the items are visible.\n   * - `true` will always present them.\n   * - `false` will never present them.\n   *\n   * By default the scroll buttons are hidden on mobile.\n   * This behavior can be disabled with `allowScrollButtonsMobile`.\n   * @default 'auto'\n   */\n  scrollButtons: PropTypes /* @typescript-to-proptypes-ignore */.oneOf(['auto', false, true]),\n  /**\n   * If `true` the selected tab changes on focus. Otherwise it only\n   * changes on activation.\n   */\n  selectionFollowsFocus: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Props applied to the tab indicator element.\n   * @default  {}\n   */\n  TabIndicatorProps: PropTypes.object,\n  /**\n   * Props applied to the [`TabScrollButton`](/material-ui/api/tab-scroll-button/) element.\n   * @default {}\n   */\n  TabScrollButtonProps: PropTypes.object,\n  /**\n   * Determines the color of the `Tab`.\n   * @default 'primary'\n   */\n  textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n  /**\n   * The value of the currently selected `Tab`.\n   * If you don't want any selected `Tab`, you can set this prop to `false`.\n   */\n  value: PropTypes.any,\n  /**\n   * Determines additional display behavior of the tabs:\n   *\n   *  - `scrollable` will invoke scrolling properties and allow for horizontally\n   *  scrolling (or swiping) of the tab bar.\n   *  -`fullWidth` will make the tabs grow to use all the available space,\n   *  which should be used for small views, like on mobile.\n   *  - `standard` will render the default state.\n   * @default 'standard'\n   */\n  variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n  /**\n   * If `true`, the scrollbar is visible. It can be useful when displaying\n   * a long vertical list of tabs.\n   * @default false\n   */\n  visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;"],"mappings":"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"},"metadata":{},"sourceType":"module"}